// interface 
interface obj1 {
	a: number
  b: string
}

interface fn1 {
	() :void
}

// type
type A = number; // 基本类型
// type：声明类型别名的关键字
// A：类型别名的名称
// Type：类型别名关联的具体类型

let num: A = 10;
type Ojb = {name:string} // 对象
type fun = ()=>string  // 函数
type Tdata = [number,string] // 元组
type numOrStr = number | string  // 联合类型

// 相同点
// 都可以用来定义 对象 或者 函数 的结构，严谨的来说，type 是引用，而  interface 是定义

// 不同点
// 1、type 在声明类型别名后，将别名与类型关联了起来，也就是说类型别名不会创建出一种新的类型，只是给已有类型命名并直接引用。而  interface 是定义了一个 接口 类型。
// 2、type 表示 非对象 类型， 而 interface 表示 对象 类型。
// 3、interface 可以 继承 其他的 接口、类 等对象类型， 严格来说 type 不支持继承。
// 4、interface 可以声明合并，而 type 不可以，这也意味着我们可以通过声明合并的方式给 interface 定义的类型进行属性扩展。
// 5、type 可以通过 typeof 来获取实例的类型从而进行赋值操作

